// pages/Setting/Setting.js
import {
  queryUserSettingInfo,
  updateUserInformation
} from "../../service/setting"
import {
  uploadImage
} from "../../service/file"
import dayjs from "dayjs"

const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 手机号
    phone: null,
    // 生日
    birthday: null,
    // 昵称
    nickName: null,
    // 头像
    avatar: null,
    // 展示昵称修改框
    showNicknameDialog: false,
    // 昵称修改值
    nicknameModificationValue: null,
    // 关闭修改昵称对话框前的回调函数
    beforeCloseNicknameDialog: null,
    // 日期选择器的日期
    selectedDate: dayjs().format('YYYY-MM-DD')
  },
  /**
   * 点击服务条款
   */
  onTapTermsOfService() {
    wx.navigateTo({
      url: '/pages/TermsOfService/TermsOfService',
    })
  },
  /**
   * 点击隐私策略
   */
  onTapPrivacyPolicy() {

  },
  /**
   * 生命周期函数
   */
  async onLoad() {
    wx.showLoading({
      title: '加载中',
    })
    const res = await queryUserSettingInfo()
    console.log(res);
    this.setData({
      phone: res.data.phoneNumber,
      birthday: res.data.birthday,
      nickName: res.data.nickName,
      avatar: res.data.imageUrl,
      nicknameModificationValue: null
    })
    wx.hideLoading()
    const self = this
    const beforeCloseNicknameDialog = (action) =>
      new Promise(async (resolve) => {
        if (action === "confirm") {
          if (!self.validateNickname(self.data.nicknameModificationValue)) {
            wx.showToast({
              title: '昵称格式错误',
              icon: 'none'
            })
            resolve(false)
          } else {
            wx.showToast({
              title: '昵称修改成功',
              icon: 'none'
            })
            const param = {
              nickName: self.data.nicknameModificationValue
            }
            await updateUserInformation(param)
            await self.onLoad()
            resolve(true)
          }
        } else {
          resolve(true);
        }
      });
    this.setData({
      // 关闭昵称修改之前的回调函数
      beforeCloseNicknameDialog: beforeCloseNicknameDialog
    })
  },
  /**
   * 点击退出登录按钮
   */
  onTapLogout() {
    wx.showModal({
      title: '提示', // 可选，默认无
      content: '确定要退出登录吗？', // 可选，默认无
      showCancel: true, // 可选，是否显示“取消”按钮，默认 true
      cancelText: '取消', // 可选，“取消”按钮文字，默认“取消”
      cancelColor: '#000000', // 可选，“取消”按钮颜色，默认 #000000
      confirmText: '确认', // 可选，“确认”按钮文字，默认“确认”
      confirmColor: '#556d8c', // 可选，“确认”按钮颜色，默认 #52c41a
      success: (res) => { // 接口调用成功的回调（用户点击按钮后触发）
        if (res.confirm) {
          wx.clearStorageSync()
          app.globalData.isLogin = false
          wx.reLaunch({
            url: '/pages/User/User',
          })
        } else if (res.cancel) {
          // 用户点击了“取消”按钮，可执行取消后的逻辑（如关闭对话框、不操作）
          console.log('用户取消操作');
        }
      }
    });
  },
  /**
   * 点击修改头像
   */
  async onTapAvatar() {
    const that = this
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'], // 来源：相册或相机
      sizeType: ['original', 'compressed'],
      async success(res) {
        const selectedImage = res.tempFiles[0].tempFilePath;
        wx.showLoading({
          title: '加载中',
        })
        const {
          data: imageUrl
        } = await uploadImage(selectedImage)
        that.setData({
          avatar: imageUrl
        })
        const param = {
          avatar: that.data.avatar
        }
        wx.showLoading({
          title: '加载中',
        })
        await updateUserInformation(param)
        wx.hideLoading()
        await that.onLoad()
        wx.hideLoading()
      }
    })

  },
  /**
   * 点击修改昵称
   */
  onTapNickname() {
    this.setData({
      showNicknameDialog: true
    })
  },
  /**
   * 点击修改手机号
   */
  onTapPhone() {
    wx.navigateTo({
      url: '/pages/Setting/UpdateBindingMobile/UpdateBindingMobile',
    })
  },
  /**
   *  昵称校验函数
   */
  validateNickname(nickname) {
    // 先检查是否为null、undefined或空字符串
    if (nickname === null || nickname === undefined || nickname.trim() === "") {
      return false;
    }
    // 再进行正则验证
    const regex = /^[\u4e00-\u9fa5a-zA-Z0-9]{3,20}$/;
    return regex.test(nickname);
  },
  async onDateChange(event) {
    const date = event.detail.value
    const param = {
      birthday: date
    }
    wx.showLoading({
      title: '加载中',
    })
    await updateUserInformation(param)
    wx.hideLoading()
    wx.showToast({
      title: '设置成功',
      icon: "none"
    })
    await this.onLoad()
  }


})